package com.lp.module_home_c.api;

import com.lp.module_home_c.bean.JokeListBean;
import com.lp.module_home_c.bean.TextBean;
import com.lp.module_lib.network.mvp.BaseModel;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.PartMap;
import retrofit2.http.QueryMap;
import retrofit2.http.Streaming;
import retrofit2.http.Url;

/**
 * 作者：created by LP_TREAM on 2020/11/28 23:33
 * 邮箱：806875201@qq.com
 */
public interface HomeCApiServer {

    /**
     * 获取军事列表
     *
     * @param params
     * @return
     */
    @FormUrlEncoded
    @POST("index?")
    Observable<BaseModel<TextBean>> getText(@FieldMap HashMap<String, String> params);
    /**
     * 获取随机列表
     *
     * @param params
     * @return
     */
    @GET("api/joke/list?")
    Observable<BaseModel<List<String>>> getJokeList(@QueryMap HashMap<String, String> params);

    /**
     * 文件上传管理
     *
     * @return
     */
    @Streaming
    @Multipart
    @POST("/api/up_message_img")
    Observable<BaseModel<Object>> getUpload(@PartMap Map<String, RequestBody> map,
                                             @Part List<MultipartBody.Part> parts);
    /**
     * 文件上传管理
     *
     * @return
     */
    @Streaming
    @Multipart
    @POST("/wxapp/public/upload")
    Observable<BaseModel<Object>> getUploadOne(@PartMap Map<String, RequestBody> map,
                                            @Part MultipartBody.Part parts);

    /**
     * 大文件官方建议用 @Streaming 来进行注解，不然会出现IO异常，小文件可以忽略不注入
     */
    @Streaming
    @GET
    Observable<ResponseBody> downloadFile(@Url String fileUrl);
}
